Server Configuration in ASP.NET Core

ASP.NET Core में सर्वर कॉन्फ़िगरेशन

पिछले लेख में हमने डेटाबेस के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझा है। अब डेटाबेस के बाद सर्वर कॉन्फ़िगरेशन के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझते हैं।

ASP.NET Core में सर्वर (विशेषकर Kestrel) की कॉन्फ़िगरेशन दरअसल application के बहुत core पहलुओं से जुड़ा है, क्योंकि सर्वर की settings यह निर्धारित करती हैं कि:

  • कौन-से ports पर एप्लिकेशन सुनेगी
  • किस protocol (HTTP/HTTPS) पर
  • TLS/SSL प्रमाणपत्र कौन-सा होगा
  • कितनी requests सम्हाली जा सकती हैं इत्यादि

इन्हीं बिंदुओं के संदर्भ में हम तीन प्रमुख घटकों को समझते हैं:

1. Configuration Source (कॉन्फ़िगरेशन स्रोत)

वह स्थान जहाँ से सर्वर (जैसे Kestrel) की settings पढ़ी जाती हैं।

उदाहरण:

स्रोत भूमिका
appsettings.json Kestrel की bindings/limits यहीं पर लिखी जाती हैं
Environment Variables Docker या production hosting में
Command-Line Arguments Testing या Dev automation के लिए
In-code (hard-coded) config Programmatically सेट की गई settings

उदाहरण – appsettings.json में Kestrel के लिए:

{
  "Kestrel": {
    "Endpoints": {
      "Http": { "Url": "http://localhost:5000" },
      "Https": {
        "Url": "https://localhost:5001",
        "Certificate": {
          "Path": "certs/devcert.pfx",
          "Password": "mypassword"
        }
      }
    }
  }
}

2. Configuration Provider (कॉन्फ़िगरेशन प्रदाता)

यह वे component होते हैं जो विभिन्न sources (जैसे JSON, Env Vars) से डेटा को पढ़कर एक Unified Configuration Object (IConfiguration) बनाते हैं।

ASP.NET Core में ये providers IConfigurationProvider interface implement करते हैं।

उदाहरण:

Provider डेटा स्रोत
JsonConfigurationProvider appsettings.json
EnvironmentVariablesConfigurationProvider ASPNETCORE_Kestrel__Endpoints__Https__Url
CommandLineConfigurationProvider --Kestrel:Endpoints:Http:Url=http://localhost:5002

ये सभी मिलकर IConfiguration बनाते हैं जिसे हम builder.Configuration के ज़रिए access करते हैं।

3. Configuration Data (कॉन्फ़िगरेशन डेटा)

यह वह वास्तविक key-value data होता है जो IConfiguration में उपस्थित रहता है, और जिससे सर्वर (जैसे Kestrel) runtime पर अपनी settings प्राप्त करता है।

उपयोग उदाहरण:

var builder = WebApplication.CreateBuilder(args); 
builder.WebHost.ConfigureKestrel(options =>{    
options.Configure(builder.Configuration.GetSection("Kestrel"));
});

यहां Configuration Data → "Kestrel": { ... } section से आता है
और उसे ConfigureKestrel() method के ज़रिए apply किया जाता है।

तीनों घटक साथ कैसे काम करते हैं?

Configuration Source   ↓ (e.g., appsettings.json, env vars)

Configuration Provider   ↓ (key-value mapping बनाता है)

Configuration Data (IConfiguration)   ↓Used by Kestrel Server setup at runtime

सरल उपमा से समझें:

मान लीजिए आपकी एप्लिकेशन एक हवाई अड्डा (Airport) है और Kestrel एक रनवे पर जहाज़ उतारने वाला सिस्टम है:

घटक उपमा
Configuration Source वह दस्तावेज़ जहाँ से रनवे के निर्देश आते हैं (मैन्युअल, पत्र, निर्देश)
Configuration Provider वह अधिकारी जो इन दस्तावेज़ों को पढ़कर रनवे को निर्देश देता है
Configuration Data वह अंतिम actionable जानकारी जिससे रनवे (Kestrel) तय करता है कि किस altitude, speed और दिशा में हवाईजहाज़ को उतरना है

निष्कर्ष सारणी:

घटक भूमिका उदाहरण
Configuration Source सर्वर सेटिंग्स कहाँ से आ रही हैं appsettings.json, env vars
Configuration Provider Source से डेटा पढ़कर usable format बनाता है JsonConfigurationProvider, EnvironmentVariablesConfigurationProvider
Configuration Data अंतिम usable key-value config Configuration["Kestrel:Endpoints:Https:Url"]

Environment Variable से Kestrel config कैसे दें?

ASPNETCORE_Kestrel__Endpoints__Http__Url=http://+:8080

(यह production-ready Docker deployment में बहुत काम आता है)

Exercise:

  • एक custom port और SSL cert को appsettings.json से पढ़ा जाए
  • और उसे ConfigureKestrel() के अंदर apply किया जाए।

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks